Operator: full reconciler implementation with status reporting and tests#34
Draft
Operator: full reconciler implementation with status reporting and tests#34
Conversation
…gger, status reporting, and tests Co-authored-by: fmallmann <30110193+fmallmann@users.noreply.github.com>
Co-authored-by: fmallmann <30110193+fmallmann@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] [agentic-layer/testbench#27] Implement reconciler logic and tests
Operator: full reconciler implementation with status reporting and tests
Mar 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the reconciliation loop for the
ExperimentCRD, replacing the scaffolded stub. Creating anExperimentCR now generates a ConfigMap, a TestkubeTestWorkflow, and optionally aTestTrigger, all withownerReferencesfor cascade deletion.Reconciliation logic
scenariostoexperiment.json(snake_case matching the Python testbench schema); empty-scenarios placeholder for dataset modetestworkflows.testkube.io/v1, viaunstructured.Unstructured)/data/datasets/experiment.json; chainsrun → evaluate → publish → visualizesetup-templatewith resolveddatasetUrl(HTTP ors3://bucket/key); no file mountOTEL_EXPORTER_OTLP_ENDPOINTfromotel-configConfigMaptests.testkube.io/v1) — created whenspec.trigger.enabled: true, watching theDeploymentderived fromagentRef; deleted when disabled/removedhttp://<agentRef.name>.<agentRef.namespace>:8000isCRDNotInstalledhelper)Status reporting
Sets
ReadyandWorkflowReadyconditions (withObservedGeneration) and populatesstatus.generatedResourcesafter each reconcile.Tests
23 envtest unit tests covering scenarios mode, dataset mode (including S3 URL resolution), trigger create/delete lifecycle, status conditions, and idempotency. Minimal Testkube CRD fixtures added to
testdata/crds/so envtest can accept unstructured TestWorkflow and TestTrigger objects.golangci-lint v2 migration
The existing
.golangci.ymlwas broken against the installed golangci-lint v2.10.1. Updated to the v2 config schema:version: "2", exclusion rules moved tolinters.exclusions.rules, removed deprecated linters (exportloopref,gofmt,goimports,gosimple,typecheck), and pinnedgo: "1.25"to match the linter binary's build toolchain.Original prompt
🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.